package com.mpo.ejb.persistence.dao.frontend.impl;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

import org.apache.log4j.Logger;

import com.mpo.common.util.SeguridadesException;
import com.mpo.ejb.persistence.dao.frontend.factorydao.AbstractDao;
import com.mpo.ejb.persistence.entities.Cuenta;


@SuppressWarnings("unchecked")
@Stateless
public class CuentaDAO extends AbstractDao<Cuenta> {
	private final Logger log = Logger.getLogger(ClienteDAO.class);
	private boolean consultaRealizada;

	/**
	 * Constructor por defecto que inicializa el AbstractDao con la clase
	 * entidad
	 */
	public CuentaDAO() {
		super(Cuenta.class);
	}

	public boolean setAbrirCuentaCliente(Integer cliente,
			String descripcionCuenta) {
		log.info("metodo setAbrirCuentaCliente Clase CuentaDAO");
		consultaRealizada = false;
		try {
			System.out.println("Puenta = " + cliente);
			// Query query = em.getEntityManagerFactory()
			// .createQuery("SELECT b FROM campania b WHERE b.nombre= :nombre");
			// query.setParameter("nombre", nombreCampania);
			// return query.getResultList();
			Query query = em
					.createNativeQuery(
							"call mpo_insert_cuenta_cliente(:cliente,:descripcionCuenta)")
					.setParameter("nombres", cliente)
					.setParameter("apellidos", descripcionCuenta);
			query.executeUpdate();
			consultaRealizada = true;

		} catch (RuntimeException e) {
			e.getMessage();
		}
		return consultaRealizada;

	}

	public List<Cuenta> getCuentasPorIdCliente(Integer cliente, String estado) throws SeguridadesException {
		log.info("metodo getCuentasPorIdCliente Clase CuentaDAO");
		
		List<Cuenta> cuentas=null;
		try {
			System.out.println("Puenta = " + cliente);
			Query query = em
					.createQuery("SELECT * FROM cuenta c"
+"WHERE id_cuenta  in(select id_cuenta  from  historial_cuenta_persona where id_persona=:cliente) and estado=:estado");
			query.setParameter("cliente", cliente)
			.setParameter("estado", estado);
			cuentas=query.getResultList();

		} catch (Exception e) {
			log.info("error al obtenerPorIdCliente {}"+ e.toString());
			throw new SeguridadesException("error al obtenerPorIdCliente" + e);
		}
	
		return cuentas;

	}

	public boolean setServiciosCliente(Integer tipo_servicio, Integer servicio,
			Float valorUnit, Integer cantidad, String detalle) {

		return true;
	}
}
